DynamoDB তে Filter Expressions ব্যবহার করে আপনি Query অথবা Scan অপারেশনে ডেটা ফিল্টার করতে পারেন। এই ফিচারটি আপনাকে নির্দিষ্ট শর্তে (conditions) মেলে এমন ডেটা ফেরত আনতে সহায়তা করে। Filter Expressions সাধারণত Query বা Scan অপারেশনের পরে প্রয়োগ করা হয়, এবং এটি শুধুমাত্র রিটার্ন করা ডেটা সীমাবদ্ধ করে, তবে এটি পারফরম্যান্সকে ততটা প্রভাবিত করে না।
Filter Expression হল একটি শর্ত যা Query অথবা Scan অপারেশন চলাকালীন ডেটার মধ্যে filter প্রয়োগ করে। Filter Expression ব্যবহৃত হলে, DynamoDB প্রথমে নির্দিষ্ট প্যারামিটার অনুযায়ী ডেটা অনুসন্ধান করে (Query বা Scan অপারেশন), তারপর যেসব আইটেম শর্ত পূর্ণ করে না, সেগুলো বাদ দিয়ে রিটার্ন করে।
Query অপারেশন দিয়ে আপনি একটি টেবিলের ডেটা অনুসন্ধান করেন এবং Filter Expression ব্যবহার করে আপনি নির্দিষ্ট কন্ডিশন অনুসারে ডেটা ফিল্টার করতে পারেন।
উদাহরণ: ধরুন, আপনার একটি টেবিল আছে যেখানে ProductID, ProductCategory, এবং Price আছে। আপনি এমন সমস্ত প্রোডাক্টের তথ্য চান যাদের ক্যাটেগরি "Electronics" এবং Price 50 এর বেশি।
Query Expression with Filter Expression:
const params = {
TableName : "Products",
KeyConditionExpression: "ProductCategory = :category",
FilterExpression: "Price > :price",
ExpressionAttributeValues: {
":category": "Electronics",
":price": 50
}
};
docClient.query(params, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data.Items);
}
});
এখানে:
KeyConditionExpression
দ্বারা ProductCategory এর জন্য Query নির্ধারণ করা হয়েছে।FilterExpression
দ্বারা Price এর জন্য শর্ত দেয়া হয়েছে (Price > 50)।Scan অপারেশন DynamoDB টেবিলের সমস্ত আইটেম স্ক্যান করে, এবং আপনি Filter Expressions ব্যবহার করে ফলাফলগুলো ফিল্টার করতে পারেন। তবে, Scan অপারেশনটি কম পারফর্ম্যান্স হতে পারে, কারণ এটি পুরো টেবিল স্ক্যান করে।
উদাহরণ: ধরুন, আপনার একটি টেবিল "Employees" আছে, এবং আপনি সব কর্মচারীকে দেখতে চান যাদের বয়স 30 এর বেশি এবং পদ "Manager"।
Scan Expression with Filter Expression:
const params = {
TableName : "Employees",
FilterExpression: "Age > :age and Position = :position",
ExpressionAttributeValues: {
":age": 30,
":position": "Manager"
}
};
docClient.scan(params, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data.Items);
}
});
এখানে:
FilterExpression
দ্বারা Age এর জন্য শর্ত দেয়া হয়েছে (Age > 30) এবং Position এর জন্য শর্ত দেয়া হয়েছে (Position = "Manager")।=
, <
, >
, <=
, >=
, <>
(Not equal)Age > :age
AND
, OR
Age > :age AND Position = :position
begins_with(attribute, value)
: যদি আপনি স্ট্রিংয়ের শুরুতে নির্দিষ্ট শব্দ দেখতে চান।contains(attribute, value)
: যদি আপনি স্ট্রিংয়ের মধ্যে একটি নির্দিষ্ট শব্দ দেখতে চান।begins_with(Username, "admin")
attribute_exists(attribute)
: যদি একটি অ্যাট্রিবিউট বিদ্যমান থাকে।attribute_not_exists(attribute)
: যদি একটি অ্যাট্রিবিউট অনুপস্থিত থাকে।Filter Expressions DynamoDB তে ডেটার রিটার্ন নিয়ে আরও ফাইন টিউনিং করার জন্য ব্যবহৃত হয়। এটি আপনাকে আরও নির্দিষ্টভাবে ডেটা পেতে সাহায্য করে, তবে এটি পুরো স্ক্যান বা কুয়েরি ফলাফলকে প্রভাবিত করে, এবং বড় টেবিলের ক্ষেত্রে পারফরম্যান্সের ওপর প্রভাব ফেলতে পারে।
common.read_more